﻿/**  \file 
 \brief Класс строка с расширенной функциональностью

*/

#pragma once
 
 
#include <string>
#include "core_api.h"



//!  \brief Класс строка с расширенной функциональностью
class  CORE_API String : public std::string {
public:

	String() 
	{

	}

	String(const char* a) : std::string(a) 
	{

	}

	String(const std::string& a) : std::string(a)
	{

	}

	String(const String& a) : std::string( a.c_str() ) 
	{

	}

	String(const char* _Format, ... );

	//---------------------------------------------

	String& operator = (const char* a)
	{
		assign(a);
		return *this;
	}

	operator const char*() const
	{
		return c_str();
	}





	//----------------------------------------------

	void operator += (const char* a)
	{
		append(a);
	}

	void operator += (const String& a)
	{
		append( a.c_str() );
	}

	void operator += (const std::string& a)
	{
		append( a.c_str() );
	}
 
	void operator += (bool value);

	void operator += (int value);

	void operator += (float value);
 
 
	void AssignF(const char* _Format, ... );		
	void AppendF(const char* _Format, ... );
 

};

 